package com.elephant.core.controller.domain;

import lombok.Data;

import javax.persistence.*;
import java.io.Serializable;

/**
 * TkMapper时开启Mybatis的二级缓存
 *
 * 1、在applcation.properties中
 * mybatis.configuration.cache-enabled=true
 *
 * 2、在Mapper接口上使用@CacheNamespace注解
 *
 * 3、实体类需要序列化
 *
 *    ps. mybatis自身实现二级缓存弊端在于只能作用于数据库，此时需要我们引用第三方库作为缓存库，这样缓存更具有扩展性
 *        为了更细粒度的控制缓存，更多的集成【ehcache】、【redis】
 *
 * ---------------Cache Hit Ratio也就是缓存命中率-------------------
 *
 * 一级缓存：基于PerpetualCache的HashMap的本地缓存，一级缓存的作用域为sqlSession,当sqlSession被flush或close之后，当前sqlSession中的所有缓存都将被清空；
 *
 * 二级缓存：和一级缓存的机制相同，默认也是采用PerpetualCache的HashMap存储，但二级缓存的作用域是mapper（namespace）;
 *
 * 在mybatis的缓存机制中，当缓存（一级缓存的sqlSession/二级缓存的namespace）进行了增删改的操作之后，当前select的所有数据缓存都将被清除；
 *
 * @author hai
 * @description
 * @date 10:07 2018/9/4
 */
@Data
@Table(name = "t_common_dict")
public class Dict implements Serializable {

    private static final long serialVersionUID = 6213228570070688773L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;

    @Column(name = "dict_key")
    private String dictKey;

    @Column(name = "dict_type")
    private String dictType;

    @Column(name = "dict_value")
    private String dictValue;

    @Column(name = "dict_desc")
    private String dictDesc;
}
